package day01;

/**
 * @author aiPlusPlus
 * @version 1.0
 * @date 2023/1/1 11:07
 */

/**
 * 给你一个字符串 s ，它每一位都是 1 到 9 之间的数字组成，同时给你一个整数 k 。
 *
 * 如果一个字符串 s 的分割满足以下条件，我们称它是一个 好 分割：
 *
 * s 中每个数位 恰好 属于一个子字符串。
 * 每个子字符串的值都小于等于 k 。
 * 请你返回 s 所有的 好 分割中，子字符串的 最少 数目。如果不存在 s 的 好 分割，返回 -1 。
 *
 * 注意：
 *
 * 一个字符串的 值 是这个字符串对应的整数。比方说，"123" 的值为 123 ，"1" 的值是 1 。
 * 子字符串 是字符串中一段连续的字符序列。
 *
 *
 * 示例 1：
 *
 * 输入：s = "165462", k = 60
 * 输出：4
 * 解释：我们将字符串分割成子字符串 "16" ，"54" ，"6" 和 "2" 。每个子字符串的值都小于等于 k = 60 。
 * 不存在小于 4 个子字符串的好分割。
 * 示例 2：
 *
 * 输入：s = "238182", k = 5
 * 输出：-1
 * 解释：这个字符串不存在好分割。
 */
public class Solution4 {
    public int minimumPartition(String s, int k) {
        int num = k;
        int count = 0;
        while (num!=0){
            num/=10;
            count++;
        }
        int ans = 0;
        int slow = 0,fate = count;
        while (fate<s.length()){
            if(Integer.parseInt(s.substring(slow,fate))<=k){
                slow+=count;
                fate+=count;
            }else {
                if(count==1){
                    return -1;
                }else {
                    slow+=count-1;
                    fate+=count-1;
                }
            }
            ans++;
        }
        if(Integer.parseInt(s.substring(slow,s.length()))<=k){
            ans++;
        }else {
            ans+=2;
        }
        return ans;
    }
}
